﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Logic;

using Business_Entity;

namespace PetSoft.GUI.Compras
{
    public partial class GUINuevaOrdenDeCompra : Form
    {
    	private int opcionModificado=0;
        private List<BEProductoProveedor> lstPedidoCompra;
        private List<BELineaOrdenCompra> lstLineaOrdenCompra;
        private List<BEProductoProveedor> lstProductosCriticos;
        private List<BEProductoProveedor> lstProductos;
        private BEOrdenCompra beOC;
        private List<String> lstEstados;
        private BEProveedor proveedorSeleccionado;
        private Business_Logic.BLOrdenCompra blOrdenCompra=new Business_Logic.BLOrdenCompra();
        private int opcionVentana;
        private Business_Logic.BLProductoProveedor ProdxProv=new Business_Logic.BLProductoProveedor();
        private List<BEProveedor> lstProv;
		private BLProveedor blProveedor;
        private int idOrdenCompra;
        public GUINuevaOrdenDeCompra(int opcion,int id)
        {
            InitializeComponent();
            
            ModificarBTN.Enabled=false;
            CerrarBTN.Enabled=false;
            for (int i=0;i<BLInfo.usuarioActual.Rol.Privilegio.Count;i++){
	                if ((new BLPrivilegio()).existePrivilegio(1,"COMP","ORDC",BLInfo.UsuarioActual.Rol.Privilegio)){
	                    CerrarBTN.Enabled=true;
	                    
	                }
            		if (((new BLPrivilegio()).existePrivilegio(2,"COMP","ORDC",BLInfo.UsuarioActual.Rol.Privilegio))){
            			
	                    ModificarBTN.Enabled=true;
	                    CerrarBTN.Enabled=true;
	                }
	            	
	        }
            idOrdenCompra=id;
            FechaEntregaDTP.MaxDate=DateTime.Now;
            FechapedidoDTP.MaxDate=DateTime.Now;
            this.MaximizeBox=false;
            this.MinimizeBox=false;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            CodigoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
            NombreTB.KeyPress+=new KeyPressEventHandler(Utils.NoCaracteresRarosTB);
            NumeroOrdenCompraTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
            lstEstados=blOrdenCompra.BuscarEstadosOrdenesCOmpra();
            ProveedorTB.Enabled=false;
            ListaOrdenCompraDGV.AllowUserToAddRows=false;
            //ListaCriticaDGV.AllowUserToAddRows=false;
            ListaProductosDGV.AllowUserToAddRows=false;
            opcionVentana = opcion;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            FechaEntregaDTP.CustomFormat="yyyyMMdd";
            FechapedidoDTP.CustomFormat="yyyyMMdd";
            blProveedor=new BLProveedor();
            //ProveedorTB
            if (opcion==1){
            		this.Text="Nueva orden de Compra";
	            	beOC=new BEOrdenCompra();
	            	//CerrarBTN.Visible=false;
	            	//ModificarBTN.Visible=false;
            }
            else{
	            if (opcion == 2)
	            {
	            	
	            	this.Text="Modificar Orden de Compra";
	                beOC = blOrdenCompra.BuscarOrdenCompra(id);
	            }
	            else{
	            	
	            		this.Size = new System.Drawing.Size(610, 700);
	            		this.Text="Ver Orden de Compra";
	            		beOC=new BEOrdenCompra();
	            		beOC =blOrdenCompra.BuscarOrdenCompra(id);
	            		ListaOrdenCompraDGV.Enabled=false;
			        	EstadoCMB.Enabled=false;
			        	FechaEntregaDTP.Enabled=false;
			        	FechapedidoDTP.Enabled=false;
			        	buscarProveedorBTN.Enabled=false;
			        	CargarPedidoCompraBTN.Enabled=false;
	            		opcion=2;
	            	
	            	}
	            
            }
            lstLineaOrdenCompra=new List<BELineaOrdenCompra>();
            CargarVentana();
            CantidadListaocLBL.Text="Cantidad de productos : "+ListaOrdenCompraDGV.Rows.Count;
            
        }
        private void CargarVentana(){
        	try{
        	proveedorSeleccionado=new BEProveedor();
        	List<String> lstTipoProd=ProdxProv.getTipoProducto();
        	EstadoCMB.DataSource=lstEstados;
        	//EstadoCMB.Items.AddRange(lstEstados.ToArray());
        	TipoProductoCB.Items.AddRange(lstTipoProd.ToArray());
            TipoProductoCB.SelectedIndex=lstTipoProd.Count-1;
            
            NombreTB.MaxLength=30;
            CodigoTB.MaxLength=4;
            lstPedidoCompra= new List<BEProductoProveedor>();
            lstProductosCriticos= new List<BEProductoProveedor>();
            lstProductos=new List<BEProductoProveedor>();
            
            List<String> lstRS=new List<string>();
            lstProv=blProveedor.getListaproveedores();
            for (int i=0;i<lstProv.Count;i++){
            	lstRS.Add(lstProv[i].RazonSocial);
            }

			
            if (opcionVentana==1) {
            	NumeroOrdenCompraTB.Enabled=false;
            	//FechaEntregaDTP.Value=DateTime.Now;
            	//FechapedidoDTP.Value=DateTime.Now;
            	EstadoCMB.SelectedItem="Solicitado";
            	EstadoCMB.Enabled=false;
            	
            }
            else{
            	if (beOC!=null){
            		NumeroOrdenCompraTB.Text=beOC.Id.ToString();
            	}
            	lstLineaOrdenCompra=new List<BELineaOrdenCompra>();
            	NumeroOrdenCompraTB.Enabled=false;
            	DateTime dia;
            	if (beOC!=null){
            		ProveedorElegidoTB.Text=beOC.Proveedor.RazonSocial;
            		ProveedorTB.Text=beOC.Proveedor.RazonSocial;
            		EstadoCMB.SelectedItem=beOC.EstadoOrdenCompra;
            	
	            	dia=DateTime.ParseExact(beOC.fechaPedido.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            	FechapedidoDTP.Value=dia;
	            	dia=DateTime.ParseExact(beOC.fechaEntrega.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            	FechaEntregaDTP.Value=dia;
            	}
            	//List<BELineaOrdenCompra> lstOC;
            	//ProveedorCMB.DropDownStyle=ComboBoxStyle.DropDown;
            	//ProveedorCMB.SelectedIndex = ProveedorCMB.Items.IndexOf(beOC.Proveedor.RazonSocial);
				//ProveedorCMB.DropDownStyle=ComboBoxStyle.DropDownList; 
            	//lstLineaOrdenCompra=new Business_Logic.BLOrdenCompra().BuscarLineaOrdenCompra(beOC.Id);
            	//lstLineaOrdenCompra.AddRange(blOrdenCompra.BuscarLineaOrdenCompra(idOrdenCompra).ToArray());
            	lstLineaOrdenCompra.AddRange(blOrdenCompra.BuscarLineaOrdenCompra(idOrdenCompra).ToArray());
            	
            	for (int i=0;i<lstLineaOrdenCompra.Count;i++)
            	{
            		lstLineaOrdenCompra[i].Estado='M';
            		BELineaOrdenCompra bePP=lstLineaOrdenCompra[i];
            		ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.ProductoProveedor.Producto.Codigo, bePP.ProductoProveedor.Producto.Nombre, bePP.ProductoProveedor.Producto.TipoProducto.Descripcion, 
            		                             	bePP.ProductoProveedor.Producto.Descripcion,bePP.Cantidad,bePP.PrecioUnitario,bePP.PrecioTotal });
            		
            	}
            	}
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        private void GUINuevaOrdenDeCompra_Load(object sender, EventArgs e)
        {

        }
        
        public void CargarLineasOrdenCompra(){
        	ListaOrdenCompraDGV.Rows.Clear();
        	for (int i=0;i<lstLineaOrdenCompra.Count;i++){
        		BELineaOrdenCompra bePP=lstLineaOrdenCompra[i];
        		if (bePP.Estado.CompareTo('E')!=0){
            		ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.ProductoProveedor.Producto.Codigo, bePP.ProductoProveedor.Producto.Nombre, bePP.ProductoProveedor.Producto.TipoProducto.Descripcion, 
            		                             	bePP.ProductoProveedor.Producto.Descripcion,bePP.Cantidad,bePP.PrecioUnitario,bePP.PrecioTotal });
        		}
        	}
        	CantidadListaocLBL.Text="Cantidad de Productos : "+lstLineaOrdenCompra.Count;
        }
        
        void ListaOrdenCompraGBEnter(object sender, EventArgs e)
        {
        	
        }
        
        void DataGridView1CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        	
        }
        
        void ComboBox2SelectedIndexChanged(object sender, EventArgs e)
        {
        	
        }
        
        void DataGridView3CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        	
        }

        private void CargarPedidoCompraBTN_Click(object sender, EventArgs e)
        {
        	if ((ProveedorElegidoTB.Text!=null) && (ProveedorElegidoTB.Text.CompareTo("")!=0)){
            	GUIBuscarPedidoCompra guiCPOC = new GUIBuscarPedidoCompra(1,lstLineaOrdenCompra,this,ProveedorTB.Text);
            	guiCPOC.ShowDialog(this);
        	}
        	else{
        		Utils.MessageAviso("Debe de Ingresar un proveedor");
        	}
        }
        
        void Button2Click(object sender, EventArgs e)
        {
        	
        }
        

		
        private void BuscarBTN_Click(object sender, EventArgs e)
        {
            
        }
        
        
        void AgregarBTNClick(object sender, EventArgs e)
        {
        	
//        	int opcion=0;
//            int fila;
//        	if (opcion==1){
//                fila=ListaProductosDGV.CurrentRow.Index;
//                BEProductoProveedor bePP=new BEProductoProveedor();
//                bePP=lstProductos[fila];
//                BELineaOrdenCompra loc=new BELineaOrdenCompra();
//                loc.ProductoProveedor.Producto.Codigo=bePP.Producto.Codigo;
//                loc.ProductoProveedor.Producto.Descripcion=bePP.Producto.Descripcion;
//                loc.ProductoProveedor.Producto.Nombre=bePP.Producto.Nombre;
//                loc.ProductoProveedor.Producto.TipoProducto.Descripcion=bePP.Producto.TipoProducto.Descripcion;
//                //lstLineaPedidoCompra
//                ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto, bePP.Producto.Descripcion });
//                ListaProductosDGV.Rows.RemoveAt(fila);
//                lstProductos.RemoveAt(fila);
//                lstLineaOrdenCompra.Add(loc);
//            }
//        	else if (opcion==2){
//                fila = ListaCriticaDGV.CurrentRow.Index;
//                BEProductoProveedor bePP = new BEProductoProveedor();
//                bePP = lstProductosCriticos[fila];
//				
//                ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto, bePP.Producto.Descripcion });
//                ListaProductosDGV.Rows.RemoveAt(fila);
//                lstProductosCriticos.RemoveAt(fila);
//        	}
//        	
        }

        private void AgregarBTN_Click(object sender, EventArgs e)
        {
        	try{
            int opcion = 1;
            int fila;//=ListaProductosDGV.CurrentRow.Index;
            
	            if (opcion == 1)
	            {
	            	
	            	if (lstProductos.Count>0){
	            	fila = ListaProductosDGV.CurrentRow.Index;
	            	if (BuscarExistenciaListaOrdenesCompra(int.Parse(ListaProductosDGV[0,fila].Value.ToString())))
            		{
	                BEProductoProveedor bePP = new BEProductoProveedor();
	                bePP = lstProductos[fila];
	                BELineaOrdenCompra beLOC=new BELineaOrdenCompra();
	                if (opcionVentana == 1)
	                {
	                	beLOC.Cantidad=0;
	                	beLOC.PrecioTotal=0;
	                	beLOC.PrecioUnitario=0;
	                	beLOC.ProductoProveedor=bePP;
	                	beLOC.Estado='N';
	                	lstLineaOrdenCompra.Add(beLOC);
	                    //lstPedidoCompra.Add(bePP);
	                    //lstLineaOrdenCompra.Add();
	                    ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto.Descripcion,bePP.Producto.Descripcion,0,0.0,0 });
	                    ListaProductosDGV.Rows.RemoveAt(fila);
	                    lstProductos.RemoveAt(fila);
	                }
	                else
	                {
	                    //BELineaOrdenCompra beLOC1=new BELineaOrdenCompra();
	                    beLOC.Cantidad = 0;
	                    beLOC.PrecioTotal = 0;
	                    beLOC.PrecioUnitario = 0;
	                    beLOC.Estado='N';
	                    beLOC.ProductoProveedor = bePP;
	                    lstLineaOrdenCompra.Add(beLOC);
	                    int c=lstLineaOrdenCompra.Count;
	                    //blOrdenCompra.AgregarLineaOrdenCompra(be,beOC.Id);
	                    ListaOrdenCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto.Descripcion, bePP.Producto.Descripcion,0,0.0,0 });
	                    ListaProductosDGV.Rows.RemoveAt(fila);
	                    lstProductos.RemoveAt(fila);
	                }
	            	}
	            }
	            	
	            	
	            }
	            CantidadBusquedaProductosLBL.Text="Cantidad de Productos : "+ListaProductosDGV.Rows.Count;
	            CantidadListaocLBL.Text="Cantidad de Productos : "+ListaOrdenCompraDGV.Rows.Count;
        	}
	            catch(Exception ex){
	            	
	            }
	            finally{
	            	
	            }
        	
        }
        private bool BuscarExistenciaListaOrdenesCompra(int id){
        	for (int i=0;i<ListaOrdenCompraDGV.Rows.Count;i++)
        	{
        		if ((int.Parse(ListaOrdenCompraDGV[0,i].Value.ToString())==id))
        		{
        			return false;
        		}
        	}
        	return true;
        }
        private int BuscarOrdenCompradeListaOrdenCompra(int id)
        {
            for (int i = 0; i < lstPedidoCompra.Count; i++)
            {
            	if ((lstPedidoCompra[i].Producto.Codigo == id))
                {
                    return i;
                }
            }
            return -1;
        }
		
        private void EliminarBTN_Click(object sender, EventArgs e)
        {
            int fila;
            if (lstLineaOrdenCompra.Count>0){
            fila = ListaOrdenCompraDGV.CurrentRow.Index;
            
            if (opcionVentana == 1)
            {
                //int numFila = BuscarOrdenCompradeListaOrdenCompra(int.Parse(ListaOrdenCompraDGV[0, fila].ToString()));
                int fil=BuscarIndiceporFila(fila);
                ListaOrdenCompraDGV.Rows.RemoveAt(fila);
                //int id = int.Parse(ListaOrdenCompraDGV.Rows[0].ToString());
                
                lstLineaOrdenCompra.RemoveAt(fil);
            }
            else
            {
	            	int fil=BuscarIndiceporFila(fila);
            		ListaOrdenCompraDGV.Rows.RemoveAt(fila);
	                //int id = int.Parse(ListaOrdenCompraDGV.Rows[0].ToString());
	                if (lstLineaOrdenCompra[fil].Estado.CompareTo('M')==0){
	                	lstLineaOrdenCompra[fil].Estado='E';
	                }
	                else{
	                	lstLineaOrdenCompra.RemoveAt(fil);
	                }
//                int idLinea = int.Parse(ListaOrdenCompraDGV[0,fila].ToString());
//                blOrdenCompra.EliminarLineaOrdenCompra(idLinea);
//                ListaOrdenCompraDGV.Rows.RemoveAt(fila);
            }
            }
            CantidadListaocLBL.Text="Cantidad de productos : "+lstLineaOrdenCompra.Count;
        }

        private void BuscarproductoGB_Enter(object sender, EventArgs e)
        {

        }
        private int BuscarId(int id)
        {
            for (int i = 0; i < ListaOrdenCompraDGV.Rows.Count; i++)
            {
                if (int.Parse(ListaOrdenCompraDGV[0, i].ToString()) == id)
                {
                    return i;
                }
            }
            return -1;
        }
        public bool VerificarCantidadesyPrecios(){
        	
        	for (int i=0;i<ListaOrdenCompraDGV.Rows.Count;i++){
        		if (int.Parse(ListaOrdenCompraDGV[4,i].Value.ToString())<=0){
        			Utils.MessageAviso("La cantidad de la fila "+(i+1)+" debe de ser mayor a cero");
        			return false;
        		}
        		if (float.Parse(ListaOrdenCompraDGV[5,i].Value.ToString())<=0){
        			Utils.MessageAviso("El Precio Unitario en la fila "+(i+1)+" debe de ser mayor a cero");
        			return false;
        		}
        	}
        	return true;
        }
        private void VerDetallesBTN_Click(object sender,EventArgs e)
        {
        	if (ListaOrdenCompraDGV.Rows.Count>0){
	        	int fila=ListaOrdenCompraDGV.CurrentRow.Index;
	        	
	        	GUILineaOrdenCompra guiLOC=new GUILineaOrdenCompra(ListaOrdenCompraDGV,fila);
	        	guiLOC.ShowDialog(this);
        	}
        }
        private void AceptarBTN_Click(object sender, EventArgs e)
        {
            BEOrdenCompra beOrdenCompra=new BEOrdenCompra();
            //beOrdenCompra.Id = int.Parse(CodigoTB.Text);
            beOrdenCompra.fechaPedido = FechapedidoDTP.Value.ToString("yyyyMMdd");
            beOrdenCompra.fechaEntrega = FechaEntregaDTP.Value.ToString("yyyyMMdd");
            beOrdenCompra.Proveedor.RazonSocial =ProveedorTB.Text;
            beOrdenCompra.LineaordenCompra = null;
            beOrdenCompra.EstadoOrdenCompra=EstadoCMB.SelectedItem.ToString();
            
            int total=0; float mtotal=0;
            for (int j=0;j<ListaOrdenCompraDGV.Rows.Count;j++)
            {
            	total+=int.Parse(ListaOrdenCompraDGV[4,j].Value.ToString());
            	mtotal+=float.Parse(ListaOrdenCompraDGV[6,j].Value.ToString());
            }
            beOrdenCompra.precioTotal=mtotal;
            beOrdenCompra.TotalProd=total;
            if (opcionVentana == 1)
            {
            	if (ListaOrdenCompraDGV.Rows.Count>0)
            	{
	            	if (beOrdenCompra.fechaEntrega.CompareTo(beOrdenCompra.fechaPedido)>=0)
	            	{
	            		if (ProveedorTB.Text.CompareTo("")!=0)
	            		{
			            	if (lstLineaOrdenCompra.Count>0)
			            	{
			            		if (VerificarCantidadesyPrecios())
			            		{
			            			if (VerificarProductos()){
						                int IdOrdenCompra=blOrdenCompra.AgregarOrdenCompra(beOrdenCompra);
						                for (int i = 0; i < lstLineaOrdenCompra.Count; i++)
						                {
						                    BELineaOrdenCompra linea = new BELineaOrdenCompra();
											//int j=BuscarFilaporIndice(linea.ProductoProveedor.Producto.Codigo);
						                    linea.ProductoProveedor.Producto.Codigo = int.Parse(ListaOrdenCompraDGV[0,i].Value.ToString());
						                    linea.ProductoProveedor.Producto.TipoProducto.Descripcion=ListaOrdenCompraDGV[2,i].Value.ToString();
						                    linea.ProductoProveedor.Producto.Descripcion=ListaOrdenCompraDGV[3,i].Value.ToString();
						                    linea.ProductoProveedor.Producto.Nombre=ListaOrdenCompraDGV[1,i].Value.ToString();
						                    linea.Cantidad=int.Parse(ListaOrdenCompraDGV[4,i].Value.ToString());
						                    linea.PrecioUnitario = float.Parse(ListaOrdenCompraDGV[5, i].Value.ToString());
						                    linea.PrecioTotal = float.Parse(ListaOrdenCompraDGV[6, i].Value.ToString());
						                    blOrdenCompra.AgregarLineaOrdenCompra(linea,IdOrdenCompra);
						                
						                }
						                this.Close();
						                Utils.MessageInformation("Se ha registrado la Orden de Compra satisfactoriamente");
			            			}
			            			else{
			            				Utils.MessageError("Los Productos de la Lista de Orden de Compra no pertenecen al Proveedor Seleccionado",null);
			            			}
			            		}
			            		
			            	}
			            	else{
			            		Utils.MessageAviso("La lista de productos debe de tener al menos un producto");
			            	}
	            		}
	            		else{
	            			Utils.MessageAviso("Debe de Ingresar un proveedor para poder registrar la Orden de Compra");
	            		}
	            	}
            	else{
            		Utils.MessageAviso("La Fecha de Entrega tiene que ser posterior o igual a la Fecha de Pedido");
            	}
            	}else{
            		Utils.MessageAviso("La Orden de Compra debe de tener almenos un producto");
            	}
            }
            else
            {
            	if (lstLineaOrdenCompra.Count>0){
            		if (beOrdenCompra.fechaEntrega.CompareTo(beOrdenCompra.fechaPedido)>=0){
	            		if (VerificarCantidadesyPrecios()){
			            	beOrdenCompra.Id=idOrdenCompra;
			            	
			            	//blOrdenCompra.EliminarLineaOrdenCompra(idOrdenCompra);
			                blOrdenCompra.ActualizarOrdenCompra(beOrdenCompra);
			                int j=0;
			                for (int i=0;i<lstLineaOrdenCompra.Count;i++)
			                {
			                	j=BuscarFilaporIndice(lstLineaOrdenCompra[i].ProductoProveedor.Producto.Codigo);
			                	lstLineaOrdenCompra[i].Cantidad=int.Parse(ListaOrdenCompraDGV[4,j].Value.ToString());
			                	lstLineaOrdenCompra[i].PrecioUnitario=float.Parse(ListaOrdenCompraDGV[5,j].Value.ToString());
			                	lstLineaOrdenCompra[i].PrecioTotal=float.Parse(ListaOrdenCompraDGV[6,j].Value.ToString());
			                	if (lstLineaOrdenCompra[i].Estado.CompareTo('N')==0){
			                		blOrdenCompra.AgregarLineaOrdenCompra(lstLineaOrdenCompra[i],idOrdenCompra);
			                	}
			                	if (lstLineaOrdenCompra[i].Estado.CompareTo('E')==0){
			                		blOrdenCompra.EliminarLineaOrdenCompra(lstLineaOrdenCompra[i].Id);
			                	}
			                	if (lstLineaOrdenCompra[i].Estado.CompareTo('M')==0){
			                		blOrdenCompra.ActualizarLineaOrdenCompra(lstLineaOrdenCompra[i]);
			                	}
			                }
			                this.Close();
			                Utils.MessageInformation("Se ha modificado la Orden de Compra Satisfactoriamente");
	            		}
            		}
            		else{
            			Utils.MessageAviso("La Fecha de Entrega debe de ser posterior o igual a la Fecha de Solicitud");
            		}
            	}
            	else{
            		Utils.MessageAviso("La Orden de Compra debe de tener al menos un producto");
            	}
            }
            
        }
        private int BuscarFilaporIndice(int index)
        {
        	for (int i=0;i<ListaOrdenCompraDGV.Rows.Count;i++)
        	{
        		if (int.Parse(ListaOrdenCompraDGV[0,i].Value.ToString())==index)
        		{
        			return i;
        		}
        	}
        	return 1;
        }
        
        
        private int BuscarIndiceporFila(int index)
        {
        	for (int i=0;i<lstLineaOrdenCompra.Count;i++)
        	{
        		if (lstLineaOrdenCompra[i].ProductoProveedor.Producto.Codigo==int.Parse(ListaOrdenCompraDGV[0,index].Value.ToString()))
        		{
        			return i;
        		}
        	}
        	return 1;
        }
        
        
        
        
        void BuscarBTNClick(object sender, EventArgs e)
        {
        	if (!(ProveedorTB== null) && (ProveedorTB.Text.CompareTo("")!=0))
        	{
	        	ListaProductosDGV.Rows.Clear();
	            int id; String nombre; String TProducto;
	            if (CodigoTB.Text==""){id=-1;}
	            else{
	            	id = int.Parse(CodigoTB.Text);
	            }
	            if (NombreTB.Text.Equals("")){nombre="";}
	            else{
	            	nombre = NombreTB.Text;
	            }
				String ProveedorText=ProveedorElegidoTB.Text;
				if (ProveedorElegidoTB.Text.CompareTo("")==0){ProveedorText="TODOS";}
				
		            TProducto = TipoProductoCB.SelectedItem.ToString();
		            if (TProducto.CompareTo("<Seleccionar>")==0){TProducto="Todos";}
		            lstProductos = new Business_Logic.BLProductoProveedor().Buscarproductos(id,nombre,TProducto,ProveedorText);
		            if (id>0){
		            	if (lstProductos.Count>0){
		            		if (ProveedorText.CompareTo("TODOS")!=0){
		            			if (lstProductos[0].Proveedor.RazonSocial.CompareTo(ProveedorText)!=0){
		            				lstProductos.RemoveAt(0);
		            			}
		            			else{
		            				if (TProducto.CompareTo("Todos")!=0){
		            					if (lstProductos[0].Producto.TipoProducto.Descripcion.CompareTo(TProducto)!=0){
		            						lstProductos.RemoveAt(0);
		            					}
		            				}
		            			}
		            		}
		            		else{
		            			if (TProducto.CompareTo("Todos")!=0){
		            				if (lstProductos[0].Producto.TipoProducto.Descripcion.CompareTo(TProducto)!=0){
		            					lstProductos.RemoveAt(0);
		            				}
		            			}
		            		}
		            	}
		            }
		            foreach (BEProductoProveedor Produc in lstProductos)
		            {
		            	
		                ListaProductosDGV.Rows.Add(new object[] { Produc.Producto.Codigo, Produc.Producto.Nombre, Produc.Producto.TipoProducto.Descripcion, Produc.Producto.Descripcion });
		            }
	//            }
				CantidadBusquedaProductosLBL.Text="Cantidad de Productos : "+ListaProductosDGV.Rows.Count;
        	}
        else{
        		Utils.MessageAviso("Debe de Ingresar un Proveedor antes de Iniciar la Busqueda");
        	}
        	
        }
        
        
        
        void Button3Click(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void ListaOrdenCompraDGVCellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
        	int fila=ListaOrdenCompraDGV.CurrentRow.Index;
        	if  ((e.ColumnIndex==4) || (e.ColumnIndex==5)){
        		int col1=int.Parse(ListaOrdenCompraDGV[4,fila].Value.ToString());
        		int col2=int.Parse(ListaOrdenCompraDGV[5,fila].Value.ToString());
        		ListaOrdenCompraDGV[6,fila].Value=col1*col2;
        	}
        }
		 private void BuscarProveedor(){
        	GUIBuscarProveedor guiP=new GUIBuscarProveedor(this);
        	guiP.ShowDialog(this);
        }
        private void buscarProveedorBTN_Click(object sender, EventArgs e)
        {
        	BuscarProveedor();
        }
        public void InsertarProveedorElegido(BEProveedor be){
        	proveedorSeleccionado=new BEProveedor();
        	proveedorSeleccionado.IdProv=be.IdProv;
        	proveedorSeleccionado.RazonSocial=be.RazonSocial;
        	proveedorSeleccionado.Ruc=be.Ruc;
        	proveedorSeleccionado.TelefonoContacto=be.TelefonoContacto;
        	proveedorSeleccionado.Contacto=be.Contacto;
        	ProveedorTB.Text=proveedorSeleccionado.RazonSocial;
        	ProveedorElegidoTB.Text=proveedorSeleccionado.RazonSocial;
        }
        private bool VerificarProductos(){
        	/*List<BEProductoProveedor> lstProdProv=new List<BEProductoProveedor>();
        	int numprod=0; bool cond=false;
        	if (CodigoTB.Text.CompareTo("")==0){numprod=0;}
        	else{numprod=int.Parse(CodigoTB.Text);} numprod=0;
        	lstProdProv=new Business_Logic.BLProductoProveedor().Buscarproductos(numprod,NombreTB.Text,TipoProductoCB.SelectedItem.ToString(),ProveedorElegidoTB.Text);
        	for (int j=0;j<lstLineaOrdenCompra.Count;j++){
        		for (int i=0;i<lstProdProv.Count;i++){
        			if (lstProdProv[j].Producto.Codigo==lstLineaOrdenCompra[i].ProductoProveedor.Producto.Codigo){
        				break;
        			}
        			else{
        				return true;
        			}
        		}
        	}*/
        	return true;
        }
        
        void CerrarBTNClick(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void ModificarBTNClick(object sender, EventArgs e)
        {
        	ModificarBTN.Visible=false;
        	CerrarBTN.Visible=false;
        	ListaOrdenCompraDGV.Enabled=true;
        	EstadoCMB.Enabled=true;
        	FechaEntregaDTP.Enabled=true;
        	FechapedidoDTP.Enabled=true;
        	buscarProveedorBTN.Enabled=true;
        	CargarPedidoCompraBTN.Enabled=true;
        	this.Size=new System.Drawing.Size(1210, 780);
        	this.StartPosition=FormStartPosition.CenterScreen;
        	CerrarBTN.Visible=false;
        	ModificarBTN.Visible=false;
        }
    }
}
